package com.heima.controller;

import com.heima.domain.User;
import com.heima.model.UserModel;
import com.heima.utils.CookieUtils;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        int result=0;
        //1.接收数据，处理中文乱码
        request.setCharacterEncoding("utf-8");
        String userName = request.getParameter("userName");
        String password = request.getParameter("password");
        //1.1接收用户输入的验证码的值
        String checkcode1 = request.getParameter("checkcode");
        //1.2接收系统随机生成的验证码的值
        String checkcode2 = (String) request.getSession().getAttribute("checkcode");
        //为保证每个验证码只能使用一次，应将session中的验证码值清零
        request.getSession().removeAttribute("checkcode");


        //校验一次性验证码,忽略大小写
        if(!checkcode2.equalsIgnoreCase(checkcode1)){
            request.setAttribute("msg","验证码输入错误！");
            //请求转发，跳回登录页面
            request.getRequestDispatcher("/login.jsp").forward(request,response);
            return;
        }

        //2.封装数据
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);

        //3.处理数据
        UserModel userModel = new UserModel();
        result = userModel.login(user);

        //4.页面跳转
        if (result == 0) {
            //登录失败
            //向request域中保存一个错误信息
            request.setAttribute("msg", "用户名或密码错误！");

            //使用请求转发进行页面跳转
            request.getRequestDispatcher("/login.jsp").forward(request, response);

        } else {
            //登录成功

            //记录登录成功的人数
            //将ServletContext中的值取出+1

            int count = (int)this.getServletContext().getAttribute("count");
            count++;
            //将+1后的值存回去
            this.getServletContext().setAttribute("count",count);


///////////////////////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////
            //将用户的信息保存,用于阻止用户直接访问登录成功页面
            HttpSession session = request.getSession();
            session.setAttribute("existUser",userName);
/////////////////////////////////////////////////////////////

            //这是记录用户名的功能后台代码
            //判断复选框是否已经勾选
            String remember = request.getParameter("remember");
            if("true".equals(remember)){//判断复选框是否勾选
                //勾选了，那就用cookie记住用户名
                Cookie cookie = new Cookie("remember",userName);
                //给cookie设置有效路径和有效时长
                //cookie.setPath("/web02");
                cookie.setMaxAge(60*60*24*7);
                //将cookie回写到浏览器，保存到本地
                response.addCookie(cookie);
            }else{
                Cookie cookie = new Cookie("remember","");
                //给cookie设置有效路径和有效时长
                //cookie.setPath("/web02");
                cookie.setMaxAge(60*60*24*7);
                //将cookie回写到浏览器，保存到本地
                response.addCookie(cookie);
            }

            //本来用的是重定向
            //脑抽使用使用请求转发进行页面跳转，导致登录一次，退不出账户等等问题
            //request.getRequestDispatcher("/success.jsp").forward(request, response);

            response.sendRedirect("/web02/success.jsp");


        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request,response);
    }
}
